package com.neuedu.service.impl;

import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.neuedu.common.JSONData;
import com.neuedu.dao.ProductMapper;
import com.neuedu.pojo.Product;
import com.neuedu.service.ProductService;
import com.neuedu.utils.AliOssUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.util.ArrayList;
import java.util.List;

@Service(value = "productService")
public class ProductServiceImpl implements ProductService {
    @Autowired
    private ProductMapper productMapper;
    @Autowired
    private AliOssUtils aliOssUtils;

    public JSONData<String> addProduct(Product product, MultipartFile mainFile, MultipartFile[] subFiles, MultipartFile detailFile) {

        //-1、文字性内容存储到数据库  2、图片 OSS 对象存储
        try{
            // 图片上传（主要获取 url）
            getFilePath(product,mainFile,subFiles,detailFile);
            // Product 内容保存到数据库中
            int num = productMapper.insert(product);
            if(num>0){
                return JSONData.buildSuccess("商品信息添加成功");
            }else{
                return JSONData.buildError("商品信息添加失败");
            }
        }catch(Exception ex){
            ex.printStackTrace();
            return JSONData.buildError("操作失败");
        }

    }

    public JSONData<List<Product>> queryAllProduct(int pageNum, int pageSize) {
        //设置分页==》pageHelper
        PageHelper.startPage(pageNum,pageSize);
        List<Product> products = productMapper.selectAll();
        PageInfo<Product> pageInfo = new PageInfo<Product>(products);
        if(products==null){
            return JSONData.buildError("商品信息获取失败");
        }
        return JSONData.buildSuccess(pageInfo.getList());
    }

    public JSONData<List<Product>> searchProduct(String productId, String productName, String categoryId, int pageNum, int pageSize) {
        //设置分页==》pageHelper
        PageHelper.startPage(pageNum,pageSize);
        List<Product> products = productMapper.searchProduct(productId, productName, categoryId);
        PageInfo<Product> pageInfo = new PageInfo<Product>(products);
        if(products==null){
            return JSONData.buildError("商品信息获取失败");
        }
        return JSONData.buildSuccess(pageInfo.getList());
    }

    public JSONData<String> changeProductStatus(Integer productId, Integer status) {
        int num = productMapper.changeProductStatus(productId, status);
        if(num>0){
            return JSONData.buildSuccess("修改成功");
        }
        return JSONData.buildError("修改失败");
    }

    // 获取 图片的url
    private void getFilePath(Product product, MultipartFile mainFile, MultipartFile[] subFiles, MultipartFile detailFile){
        //1、上传主图 并 获取主图的 url
        String main_path = aliOssUtils.upload(mainFile);
        product.setMainImage(main_path);

        //2、3个附图
        String sub_path = "";
        List<String> subList = new ArrayList<String>();
        for(MultipartFile file:subFiles){
            sub_path = aliOssUtils.upload(file);
            subList.add(sub_path);
        }
        //-将三个附图的地址 复制给 product对象==>subImage
        // sub_image 数据类型=》json
        JSONObject json = new JSONObject();
        json.put("sub1",subList.get(0));
        json.put("sub2",subList.get(1));
        json.put("sub3",subList.get(2));
        //将json字符串存放到Product中
        product.setSubImages(json.toJSONString());

        //3、详情：
        String detail_path = aliOssUtils.upload(detailFile);
        product.setDetail(detail_path);
    }

}
